<?php
/*
 * @ https://EasyToYou.eu - IonCube v11 Decoder Online
 * @ PHP 7.2 & 7.3
 * @ Decoder version: 1.1.6
 * @ Release: 10/08/2022
 */

// Decoded file for php version 71.
class PHPExcel_Writer_OpenDocument_Content extends PHPExcel_Writer_OpenDocument_WriterPart
{
    const NUMBER_COLS_REPEATED_MAX = 1024;
    const NUMBER_ROWS_REPEATED_MAX = 1048576;
    public function write(PHPExcel $pPHPExcel = NULL)
    {
        if(!$pPHPExcel) {
            $pPHPExcel = $this->getParentWriter()->getPHPExcel();
        }
        $objWriter = NULL;
        if($this->getParentWriter()->getUseDiskCaching()) {
            $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
        } else {
            $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
        }
        $objWriter->startDocument("1.0", "UTF-8");
        $objWriter->startElement("office:document-content");
        $objWriter->writeAttribute("xmlns:office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0");
        $objWriter->writeAttribute("xmlns:style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0");
        $objWriter->writeAttribute("xmlns:text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0");
        $objWriter->writeAttribute("xmlns:table", "urn:oasis:names:tc:opendocument:xmlns:table:1.0");
        $objWriter->writeAttribute("xmlns:draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0");
        $objWriter->writeAttribute("xmlns:fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0");
        $objWriter->writeAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
        $objWriter->writeAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/");
        $objWriter->writeAttribute("xmlns:meta", "urn:oasis:names:tc:opendocument:xmlns:meta:1.0");
        $objWriter->writeAttribute("xmlns:number", "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0");
        $objWriter->writeAttribute("xmlns:presentation", "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0");
        $objWriter->writeAttribute("xmlns:svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0");
        $objWriter->writeAttribute("xmlns:chart", "urn:oasis:names:tc:opendocument:xmlns:chart:1.0");
        $objWriter->writeAttribute("xmlns:dr3d", "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0");
        $objWriter->writeAttribute("xmlns:math", "http://www.w3.org/1998/Math/MathML");
        $objWriter->writeAttribute("xmlns:form", "urn:oasis:names:tc:opendocument:xmlns:form:1.0");
        $objWriter->writeAttribute("xmlns:script", "urn:oasis:names:tc:opendocument:xmlns:script:1.0");
        $objWriter->writeAttribute("xmlns:ooo", "http://openoffice.org/2004/office");
        $objWriter->writeAttribute("xmlns:ooow", "http://openoffice.org/2004/writer");
        $objWriter->writeAttribute("xmlns:oooc", "http://openoffice.org/2004/calc");
        $objWriter->writeAttribute("xmlns:dom", "http://www.w3.org/2001/xml-events");
        $objWriter->writeAttribute("xmlns:xforms", "http://www.w3.org/2002/xforms");
        $objWriter->writeAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
        $objWriter->writeAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
        $objWriter->writeAttribute("xmlns:rpt", "http://openoffice.org/2005/report");
        $objWriter->writeAttribute("xmlns:of", "urn:oasis:names:tc:opendocument:xmlns:of:1.2");
        $objWriter->writeAttribute("xmlns:xhtml", "http://www.w3.org/1999/xhtml");
        $objWriter->writeAttribute("xmlns:grddl", "http://www.w3.org/2003/g/data-view#");
        $objWriter->writeAttribute("xmlns:tableooo", "http://openoffice.org/2009/table");
        $objWriter->writeAttribute("xmlns:field", "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0");
        $objWriter->writeAttribute("xmlns:formx", "urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0");
        $objWriter->writeAttribute("xmlns:css3t", "http://www.w3.org/TR/css3-text/");
        $objWriter->writeAttribute("office:version", "1.2");
        $objWriter->writeElement("office:scripts");
        $objWriter->writeElement("office:font-face-decls");
        $objWriter->writeElement("office:automatic-styles");
        $objWriter->startElement("office:body");
        $objWriter->startElement("office:spreadsheet");
        $objWriter->writeElement("table:calculation-settings");
        $this->writeSheets($objWriter);
        $objWriter->writeElement("table:named-expressions");
        $objWriter->endElement();
        $objWriter->endElement();
        $objWriter->endElement();
        return $objWriter->getData();
    }
    private function writeSheets(PHPExcel_Shared_XMLWriter $objWriter)
    {
        $pPHPExcel = $this->getParentWriter()->getPHPExcel();
        $sheet_count = $pPHPExcel->getSheetCount();
        for ($i = 0; $i < $sheet_count; $i++) {
            $objWriter->startElement("table:table");
            $objWriter->writeAttribute("table:name", $pPHPExcel->getSheet($i)->getTitle());
            $objWriter->writeElement("office:forms");
            $objWriter->startElement("table:table-column");
            $objWriter->writeAttribute("table:number-columns-repeated", 1024);
            $objWriter->endElement();
            $this->writeRows($objWriter, $pPHPExcel->getSheet($i));
            $objWriter->endElement();
        }
    }
    private function writeRows(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Worksheet $sheet)
    {
        $number_rows_repeated = 1048576;
        $span_row = 0;
        $rows = $sheet->getRowIterator();
        while ($rows->valid()) {
            $number_rows_repeated--;
            $row = $rows->current();
            if($row->getCellIterator()->valid()) {
                if($span_row) {
                    $objWriter->startElement("table:table-row");
                    if(1 < $span_row) {
                        $objWriter->writeAttribute("table:number-rows-repeated", $span_row);
                    }
                    $objWriter->startElement("table:table-cell");
                    $objWriter->writeAttribute("table:number-columns-repeated", 1024);
                    $objWriter->endElement();
                    $objWriter->endElement();
                    $span_row = 0;
                }
                $objWriter->startElement("table:table-row");
                $this->writeCells($objWriter, $row);
                $objWriter->endElement();
            } else {
                $span_row++;
            }
            $rows->next();
        }
    }
    private function writeCells(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Worksheet_Row $row)
    {
        $number_cols_repeated = 1024;
        $prev_column = -1;
        $cells = $row->getCellIterator();
        while ($cells->valid()) {
            $cell = $cells->current();
            $column = PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1;
            $this->writeCellSpan($objWriter, $column, $prev_column);
            $objWriter->startElement("table:table-cell");
            $cell->getDataType();
            switch ($cell->getDataType()) {
                case PHPExcel_Cell_DataType::TYPE_BOOL:
                    $objWriter->writeAttribute("office:value-type", "boolean");
                    $objWriter->writeAttribute("office:value", $cell->getValue());
                    $objWriter->writeElement("text:p", $cell->getValue());
                    break;
                case PHPExcel_Cell_DataType::TYPE_ERROR:
                    throw new PHPExcel_Writer_Exception("Writing of error not implemented yet.");
                    break;
                case PHPExcel_Cell_DataType::TYPE_FORMULA:
                    try {
                        $formula_value = $cell->getCalculatedValue();
                    } catch (Exception $e) {
                        $formula_value = $cell->getValue();
                    }
                    $objWriter->writeAttribute("table:formula", "of:" . $cell->getValue());
                    if(is_numeric($formula_value)) {
                        $objWriter->writeAttribute("office:value-type", "float");
                    } else {
                        $objWriter->writeAttribute("office:value-type", "string");
                    }
                    $objWriter->writeAttribute("office:value", $formula_value);
                    $objWriter->writeElement("text:p", $formula_value);
                    break;
                case PHPExcel_Cell_DataType::TYPE_INLINE:
                    throw new PHPExcel_Writer_Exception("Writing of inline not implemented yet.");
                    break;
                case PHPExcel_Cell_DataType::TYPE_NUMERIC:
                    $objWriter->writeAttribute("office:value-type", "float");
                    $objWriter->writeAttribute("office:value", $cell->getValue());
                    $objWriter->writeElement("text:p", $cell->getValue());
                    break;
                case PHPExcel_Cell_DataType::TYPE_STRING:
                    $objWriter->writeAttribute("office:value-type", "string");
                    $objWriter->writeElement("text:p", $cell->getValue());
                    break;
                default:
                    PHPExcel_Writer_OpenDocument_Cell_Comment::write($objWriter, $cell);
                    $objWriter->endElement();
                    $prev_column = $column;
                    $cells->next();
            }
        }
        $number_cols_repeated = $number_cols_repeated - $prev_column - 1;
        if(0 < $number_cols_repeated) {
            if(1 < $number_cols_repeated) {
                $objWriter->startElement("table:table-cell");
                $objWriter->writeAttribute("table:number-columns-repeated", $number_cols_repeated);
                $objWriter->endElement();
            } else {
                $objWriter->writeElement("table:table-cell");
            }
        }
    }
    private function writeCellSpan(PHPExcel_Shared_XMLWriter $objWriter, $curColumn, $prevColumn)
    {
        $diff = $curColumn - $prevColumn - 1;
        if(1 === $diff) {
            $objWriter->writeElement("table:table-cell");
        } elseif(1 < $diff) {
            $objWriter->startElement("table:table-cell");
            $objWriter->writeAttribute("table:number-columns-repeated", $diff);
            $objWriter->endElement();
        }
    }
}

?>